Next: Compiling Programs, Previous: Debug Key Bindings, Up: Debugging IDL Programs [Contents][Index]
IDLWAVE helps you set breakpoints and step through code.
Setting a breakpoint in the current line of the source buffer is
accomplished with C-c C-d C-b
(idlwave-shell-break-here). With a prefix arg of 1
(i.e., C-1 C-c C-d C-b), the breakpoint gets a
/ONCE keyword, meaning that it will be deleted after
first use. With a numeric prefix greater than one (e.g., C-4
C-c C-d C-b), the breakpoint will only be active the
nth time it is hit. With a single non-numeric prefix
(i.e., C-u C-c C-d C-b), prompt for a condition: an
IDL expression to be evaluated and trigger the breakpoint only if
true. To clear the breakpoint in the current line, use C-c
C-d C-d (idlwave-clear-current-bp). When
executed from the shell window, the breakpoint where IDL is
currently stopped will be deleted. To clear all breakpoints, use
C-c C-d C-a (idlwave-clear-all-bp).
Breakpoints can also be disabled and re-enabled: C-c C-d
C-\
(idlwave-shell-toggle-enable-current-bp).
Breakpoint lines are highlighted or indicated with an icon in the source code (different icons for conditional, after, and other break types). Disabled breakpoints are grayed out by default. Note that IDL places breakpoints as close as possible on or after the line you specify. IDLWAVE queries the shell for the actual breakpoint location which was set, so the exact line you specify may not be marked. You can re-sync the breakpoint list and update the display at any time (e.g., if you add or remove some on the command line) using C-c C-d C-l.
In recent IDLWAVE versions, the breakpoint line is highlighted when the mouse is moved over it, and a tooltip pops up describing the break details. mouse-3 on the breakpoint line pops up a menu of breakpoint actions, including clearing, disabling, and adding or changing break conditions or “after” break count.
Once the program has stopped somewhere, you can step through it. The most important stepping commands are C-c C-d C-s to execute one line of IDL code ("step into"); C-c C-d C-n to step a single line, treating procedure and function calls as a single step ("step over"); C-c C-d C-h to continue execution to the line at the cursor and C-c C-d C-r to continue execution. See Commands Sent to the Shell, for information on displaying or hiding the breakpoint and stepping commands the shell receives. Here is a summary of the breakpoint and stepping commands:
| C-c C-d C-b | Set breakpoint
(idlwave-shell-break-here) |
| C-c C-d C-i | Set breakpoint in module named here
(idlwave-shell-break-in) |
| C-c C-d C-d | Clear current breakpoint
(idlwave-shell-clear-current-bp) |
| C-c C-d C-a | Clear all breakpoints
(idlwave-shell-clear-all-bp) |
| C-c C-d [ | Go to the previous breakpoint
(idlwave-shell-goto-previous-bp) |
| C-c C-d ] | Go to the next breakpoint
(idlwave-shell-goto-next-bp) |
| C-c C-d C-\ | Disable/Enable current breakpoint
(idlwave-shell-toggle-enable-current-bp) |
| C-c C-d C-j | Set a breakpoint at the beginning of the enclosing routine. |
| C-c C-d C-s | Step, into function calls
(idlwave-shell-step) |
| C-c C-d C-n | Step, over function calls
(idlwave-shell-stepover) |
| C-c C-d C-k | Skip one statement
(idlwave-shell-skip) |
| C-c C-d C-u | Continue to end of block
(idlwave-shell-up) |
| C-c C-d C-m | Continue to end of function
(idlwave-shell-return) |
| C-c C-d C-o | Continue past end of function
(idlwave-shell-out) |
| C-c C-d C-h | Continue to line at cursor position
(idlwave-shell-to-here) |
| C-c C-d C-r | Continue execution to next breakpoint, if any
(idlwave-shell-cont) |
| C-c C-d C-up | Show higher level in calling stack
(idlwave-shell-stack-up) |
| C-c C-d C-down | Show lower level in calling stack
(idlwave-shell-stack-down) |
All of these commands have equivalents in Electric Debug Mode, which provides faster single-key access (see Electric Debug Mode).
The line where IDL is currently stopped, at breakpoints,
halts, and errors, etc., is marked with a color overlay or arrow,
depending on the setting in
idlwave-shell-mark-stop-line. If an overlay face is
used to mark the stop line (as it is by default), when stepping
through code, the face color is temporarily changed to gray,
until IDL completes the next command and moves to the new
line.
t)Non-nil means mark breakpoints in the source
file buffers. The value indicates the preferred method. Valid
values are nil, t,
face, and glyph.
The face for breakpoint lines in the source code if
idlwave-shell-mark-breakpoints has the value
face.
t)Whether to pop-up a menu and present a tooltip description on breakpoint lines.
t)Non-nil means mark the source code line where
IDL is currently stopped. The value specifies the preferred
method. Valid values are nil, t,
arrow, and face.
">")The overlay arrow to display at source lines where
execution halts, if configured in
idlwave-shell-mark-stop-line.
The face which highlights the source line where IDL is
stopped, if configured in
idlwave-shell-mark-stop-line.
Next: Compiling Programs, Previous: Debug Key Bindings, Up: Debugging IDL Programs [Contents][Index]